class Solution2 {
    public int coinChange(int[] coins, int amount) {
          int len = coins.length ;
          int v = amount+1 ;
           int[] dp = new int[v] ; 
          for(int i=1 ; i<=amount ; i ++){
                dp[i] = v;
          }
          for(int i=0 ; i< len ; i ++){
            for(int j=1 ; j<=amount ; j ++){
                if(j>=coins[i] && dp[j-coins[i]] != v){
                    dp[j]= Math.min(dp[j] , dp[j-coins[i]]+1) ; 
                }
            }
          }
       return dp[amount] == v ? -1 : dp[amount] ; 
    }
}